#if !defined(TBB_PROCESSOR_H)
#define TBB_PROCESSOR_H

#include <string>
#include <vector>
#include <iostream>
#include "intervals_per_contig.h"
#include <boost/array.hpp>
	  //using boost::array;
#include <boost/tr1/unordered_map.hpp>
	//using std::tr1::unordered_map;
#include "intervals_per_contig.h"
	using intervals_per_contig::t_intervals;

const unsigned CNT_LINES_PER_CHUNK = 15000;


typedef std::vector<std::vector<unsigned> >						t_counts;
typedef std::tr1::unordered_map<std::string, long long> 		t_contig_genome_offsets;

//!_______________________________________________________________________________________
//!     
//!		parse_lines_pipeline
//!			
//!     
//!		\author lg (3/2/2011)
//!     
//!     \param cnt_threads_parallel_tasks 
//!     \param input_stream 
//!     \param verbose_strm 
//!     \param contig_genome_offsets 
//!     \param zero_based_snps 
//!     \param zero_based_snps 
//!     \param counts_per_category_per_interval_type 
//!     
//!     \return unsigned 
//!_______________________________________________________________________________________
unsigned parse_lines_pipeline(	unsigned 							cnt_threads_parallel_tasks, 
								std::istream& 						input_stream,
								std::ostream& 						verbose_strm,	
								t_contig_genome_offsets&			contig_genome_offsets,
								bool								zero_based_snps,
								bool								intervals_only,
								t_counts&							counts_per_category_per_interval_type,
								std::vector<std::string>&			category_names,
								const std::vector<t_intervals>&		intervals);



#endif
